package com.freepay.domain.model.factura;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import se.citerus.dddsample.domain.shared.Entity;

public class Factura implements Entity<Factura> {

    private int codigo;
    private Date dtFechaFactura;
    private Date dtFechaPago;
    private List<ItemFactura> itemsFactura;

    public Factura(final int codigo) {
        this.codigo = codigo;
        this.dtFechaFactura = new Date();
        this.dtFechaPago = null;
        this.itemsFactura = new ArrayList<ItemFactura>();
    }

    public boolean addItemFactura(ItemFactura itemFactura) {
        itemsFactura.add(itemFactura);
        return true;
    }

    public int cantidadItemsFactura() {
        return itemsFactura.size();
    }

    public int valorPagar() {
        int total = 0;
        for (ItemFactura itemFactura : itemsFactura) {
            total += (itemFactura.valorItem());
        }
        return total;
    }

    public int getCodigo() {
        return this.codigo;
    }

    public void imprimir() {
    }

    public void anular() {
    }

    public void pagar() {
        dtFechaPago = new Date();
    }

    @Override
    public boolean sameIdentityAs(final Factura other) {
        return other != null && other.codigo == this.codigo;
    }
}
